"""
    python面向对象深入及函数进阶
"""
# 数据类装饰器
import dataclasses


@dataclasses.dataclass
class Girl:
    # 通过数据类型定义实例属性一定要写数据类型的申明
    name: int = "cuiyouyuan"
    age: str = 28
    # 数据定义时没有加上数据类型的申明，则是类属性，即address是类属性，name和age都是实例属性
    address = "北京"

    def show(self):
        print(f"{self.name}开始拍摄电视剧")


g1 = Girl()
g1.show()
print(g1.name)
print(g1.age)
print(g1.address)

# 匿名函数
# 将匿名函数当做一个整体，在后面加上()进行调用
# 要获取返回值可以进行赋值或直接输出
print((lambda x, y: x + y)(1, 2))  # 3


# 闭包
def func_out(num1):
    def func_inner(num2):
        result = num1 + num2
        print(f"外部函数的实参为{num1}，内部函数的实参为{num2}，相加的结果为{result}")

    return func_inner  # 注意点：返回值是内部函数的引用（即函数的名字）不能调用内部函数


f = func_out(100)
f(200)
